A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates in general to the field of object-oriented programming and in particular to a method for readily transporting an object model from one tool to another wherein the object model includes a plurality of versioned states.
With the advent of modeling tools and repositories, capabilities for software modeling has improved. However, when it becomes necessary to transfer a software model from one modeling tool or repository to another, many problems arise. For example, if the modeling tools are different, then the model must be translated into a language that the second modeling tool can understand. XML Metadata Interchange (XMI) provides a standardized means of exchanging models using XML (Extensible Markup Language) streams. Reference is made to the OMG Document ad/98-10-05.
However, XMI does not handle the case where a plurality of versioned states of a model must be streamed together. In this case, the transferred content must include a version graph and must show how details and modifications of the model are related to versioned objects in the version graph. Changes are tracked at the finer grain of objects, links, and structural features; but, changes belong to versions and a version defines the state of a model.
Without the method of the current invention, transferring a plurality of versioned states of a model involves transferring the model separately for each versioned state. This approach incurs an enormous overhead because information common to many versions is transferred redundantly. Also, the receiving tool or repository must then incur the further overhead of reconstructing the detailed change tracking between the versioned states of the model by analyzing differences in the separate transmissions of the model.
A further problem with the current methods for transferring versioned states of a model arises from an object having different identifies in different versions. When an object is transferred separately for separate versions of a model, the object assumes a different identity in each case. The lack of a single identity for an object creates difficulty for external models that link to the object. Each external link to an object must be updated to identify each new version of the object. The result is unnecessary propagation of versioned changes into external models that have not really changed at all.
Accordingly, it is an object of the present invention to provide an effective means for streaming a plurality of versioned states of a model together with a version graph.
It is a further object of the present invention to capture within a single stream the complete and detailed tracking of changes between versions of a model.
It is also an object of the present invention to stream a plurality of versioned states without redundancy in order to minimize the amount of data transferred.
An important advantage of the present invention is that a single object has a single identity within a streamed content. Differences between versions are shown at the level of detail of the metamodel (the model that describes the model). Changing a property of an object does not require the object to be duplicated nor does it require pointers to the object to have new versions pointing at a duplicated new version of the object.
A further advantage of the present invention is that a version graph applies to an entire model rather than having separate version graphs for individual objects within a model. This reduces overhead and complexity substantially for models containing many objects.
These and other objects, which will become apparent as the invention is described in detail below, are provided by a computer-implemented method for streaming object models with a plurality of versioned states. The method comprises the steps of streaming out each versioned state for each nonderived classifier-level feature; streaming out each versioned state of each unowned object within the model; streaming out versioned state of each owned object not yet streamed out; streaming out the versioned state of each link not represented by a reference; and streaming out a version graph using normal XMI.
Still other objects, features and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein is shown and described only the preferred embodiment of the invention, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the spirit and scope of the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive, and what is intended to be protected by Letters Patent is set forth in the appended claims. The present invention will become apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of this application.